package com.example.springbootmqdemocustumer.service.ack;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;

/**
 * Classname: FanoutEmallConsumer
 * Description:
 *
 * @Author: Jam
 * @Create 2022/11/28 - 19:40
 * @Version 1.0
 */
@Service
// 消费： 监听可靠消费
//1.控制重发次数+死信队列
//2.try/catch + 手动ACk
//3.try/catch + 手动ACk+死信队列 +人工干预
//@RabbitListener(queues = {"orderAck.queue"})
public class ACkFanoutEmallConsumer {
//    @RabbitHandler
    public void messagerevice(String message){
        //xml设置消息重发 使用了trycatch 重置的次数将无效

        try {
            // 此处省略发邮件的逻辑
            System.out.println("email- fanout 收到了消息：------------->" + message);
            int i = 1/0;
            //basicAck:  手动ack
            //channel.basicAck(tag,false);
        } catch (Exception e) {
            //basicNack: nack移除 ,不重发，消息一直累计
            //channel.basicNack(tag,false,false); 参数1：消息的tag 参数2：多条处理 参数三：requeue 重发（false 不重发打入死信队列 true 容易死循环 要去掉try catch）
            //移到死信队列 配置监听继续处理
            //orderAck.queue

        }

    }
}
